<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Classe E-mail : Guia do Usuário</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv="expires" content="-1" />
<meta http-equiv="pragma" content="no-cache" />
<meta name="robots" content="all" />
<meta name="author" content="ExpressionEngine Dev Team" />
<meta name="description" content="Guia do Usuário do CodeIgniter" />
</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>

<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();">
<img border="0" width="154" height="43" alt="Toggle Table of Contents" title="Toggle Table of Contents" src="../images/nav_toggle_darker.jpg">
</a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>Code Igniter Versão Version 2.0.0 - Guia do Usuário</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Conteúdo</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>

<td id="breadcrumb">
<a href="http://www.codeigniter.com/">Home do Code Igniter</a> › <a href="../index-2.html">Home do Guia do Usuário</a> › Classe Email
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="www.codeigniter.com.br/manual/" />Busca&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="ok" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>Classe Email</h1>

<p>A classe de Email do Code Igniter suporta as seguintes funcionalidades:</p>


<ul>
<li>Protocolos Multiplos: Mail, Sendmail e SMTP</li>
<li>Recipientes Multiplos</li>

<li>CC e BCCs</li>
<li>Emails em HTML ou texto puro (plain text)</li>
<li>Arquivos anexos</li>
<li>Quebra de palavras</li>
<li>Prioridades</li>
<li>BCC Batch Mode, permitindo que grandes lotes de email sejam quebradas em pequenos lotes BCC.</li>
<li>Ferramentas de Debug de Email</li>
</ul>


<h2>Enviando Emails</h2>

<p>Enviar email não é apenas simples, mas você pode configurar isso em tempo de execução ou definir suas preferências em arquivos de configuração.</p>

<p>Veja uma demonstração básica de como enviar um email.  Nota:  Este exemplo assume que você está enviando o email de um de seus 
<a href="../general/controllers.html">controllers</a>.</p>

<code>$this->load->library('email');<br />
<br />
$this->email->from('voce@seu-site.com', 'Seu Nome');<br />	
$this->email->to('alguem@algum-site.com'); <br />

$this->email->cc('outro@outro-site.com'); <br />
$this->email->bcc('fulano@qualquer-site.com'); <br />
<br />
$this->email->subject('Teste de Email');<br />
$this->email->message('Testando a classe de email.');	<br />
<br />
$this->email->send();<br />
<br />
echo $this->email->print_debugger();</code>



<h2>Definindo as Preferencias de Email</h2>

<p>Existem 17 preferências disponíveis para definir como suas mensagens serão enviadas. Você pode defini-las, tanto manualmente 
como descrito aqui, quanto automaticamente usando seu arquivo de configuração, como descrito abaixo:</p>

<p>Estas preferências são definidas passando um array para a função de <dfn>inicialização</dfn> do email. Segue um exemplo de como você poderia definir algumas preferências:</p>

<code>$config['protocol'] = 'sendmail';<br />
$config['mailpath'] = '/usr/sbin/sendmail';<br />

$config['charset'] = 'iso-8859-1';<br />
$config['wordwrap'] = TRUE;<br />
<br />
$this->email->initialize($config);</code>

<p><strong>Nota:</strong> A maior parte das preferências possuem valores padrão que serão utilizados caso você não os defina.</p

><h3>Definindo as Preferências de Email em Arquivo de Configuração</h3>

<p>Se você preferir não definir as preferências usando o método acima, você pode colocá-las em um arquivo de configuração.
Crie um novo arquivo chamado <var>email.php</var>, adicione o array <var>$config</var> neste arquivo. Então, salve no 
diretório <var>config/email.php</var> da sua aplicação e ele será carregado automaticamente. Você NÃO precisará usar 
o método <dfn>$this->email->initialize()</dfn> se salvar suas preferências no Arquivo de Configuração.</p>




<h2>Preferencias de Email</h2>

<p>Abaixo segue a lista de todas as preferências que podem ser definidas para o envio de um email.</p>


<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
<tr>
<th>Preferencia</th>
<th>Valor&nbsp;Padrão</th>

<th>Opções</th>
<th>Descricao</th>
</tr><tr>
<td class="td"><strong>useragent</strong></td><td class="td">Code Igniter</td><td class="td">None</td><td class="td">O "user agent".</td>
</tr><tr>
<td class="td"><strong>protocol</strong></td><td class="td">mail</td><td class="td">mail, sendmail, ou smtp</td><td class="td">Protocolo de envio de email.</td>
</tr><tr>

<td class="td"><strong>mailpath</strong></td><td class="td">/usr/sbin/sendmail</td><td class="td">None</td><td class="td">Caminho do Sendmail no servidor.</td>
</tr><tr>
<td class="td"><strong>smtp_host</strong></td><td class="td">No Default</td><td class="td">None</td><td class="td">Endereço do Servidor SMTP.</td>
</tr><tr>
<td class="td"><strong>smtp_user</strong></td><td class="td">No Default</td><td class="td">None</td><td class="td">Usuário SMTP.</td>

</tr><tr>
<td class="td"><strong>smtp_pass</strong></td><td class="td">No Default</td><td class="td">None</td><td class="td">Senha SMTP.</td>
</tr><tr>
<td class="td"><strong>smtp_port</strong></td><td class="td">25</td><td class="td">None</td><td class="td">Porta SMTP.</td>
</tr><tr>
<td class="td"><strong>smtp_timeout</strong></td><td class="td">5</td><td class="td">None</td><td class="td">Timeout SMTP (em segundos).</td>

</tr><tr>
<td class="td"><strong>wordwrap</strong></td><td class="td">TRUE</td><td class="td">TRUE ou FALSE (booleano)</td><td class="td">Liga a quebra de palavra.</td>
</tr><tr>
<td class="td"><strong>wrapchars</strong></td><td class="td">76</td><td class="td"> </td><td class="td">Número de caracteres para quebrar.</td>
</tr><tr>
<td class="td"><strong>mailtype</strong></td><td class="td">text</td><td class="td">text or html</td><td class="td">Tipo de email. Se enviar em HTML, é necessário enviar uma página web completa. Certifique-se de que não utilizou links ou imagens com caminho relativo, pois se não elas não vão funcionar.</td>

</tr><tr>
<td class="td"><strong>charset</strong></td><td class="td">utf-8</td><td class="td"></td><td class="td">Tipo de codificação de caracter (utf-8, iso-8859-1, etc.).</td>
</tr><tr>
<td class="td"><strong>validate</strong></td><td class="td">FALSE</td><td class="td">TRUE ou FALSE  (booleano)</td><td class="td">Se deve validar o endereço de email.</td>
</tr><tr>
<td class="td"><strong>priority</strong></td><td class="td">3</td><td class="td">1, 2, 3, 4, 5</td><td class="td">Prioridade do email. 1 = maior.  5 = menor.  3 = normal.</td>

</tr><tr>
<td class="td"><strong>newline</strong></td><td class="td">\n</td><td class="td">"\r\n" or "\n"</td><td class="td">Caracter de quebra de linha. (Use "\r\n" para compatibilizar com o RFC 822).</td>
</tr><tr>
<td class="td"><strong>bcc_batch_mode</strong></td><td class="td">FALSE</td><td class="td">TRUE or FALSE (boolean)</td><td class="td">Liga BCC Batch Mode (modo de lote).</td>
</tr><tr>
<td class="td"><strong>bcc_batch_size</strong></td><td class="td">200</td><td class="td">None</td><td class="td">Número de emails em cada lote BCC.</td>

</tr>
</table>


<h2>Referências de Funções de Email</h2>

<h3>$this->email->from()</h3>
<p>Define o endereço de email e o nome da pessoa que envia o email:</p>
<code>$this->email->from('<var>voce@seu-site.com</var>', '<var>Seu Nome</var>');</code>

<h3>$this->email->reply_to()</h3>
<p>Define o endereço de resposta (reply-to).  Se ocultar esta informação, a informação do "from" será utilizada. Exemplo:</p>
<code>$this->email->reply_to('<var>voce@seu-site.com</var>', '<var>Seu Nome</var>');</code>


<h3>$this->email->to()</h3>
<p>Define o(s) endereço(s) de e-mail de destino.  Pode ser um único email, uma lista separada por vírgulas ou um array:</p>

<code>$this->email->to('<var>alguem@site.com</var>');</code>
<code>$this->email->to('<var>alguem@site.com</var>, <var>outro@outro-site.com</var>, <var>fulano@site.com</var>');</code>

<code>$list = array('<var>alguem@site.com</var>, <var>outro@outro-site.com</var>, <var>fulano@site.com</var>');<br /><br />

$this->email->to(<var>$list</var>);</code>

<h3>$this->email->cc()</h3>
<p>Define o(s) endereço(s) de email para CC. Funciona como o "to", podendo ser um único email, lista separada por vírgulas ou um array.</p>

<h3>$this->email->bcc()</h3>
<p>Define o(s) endereço(s) de email para BCC. Funciona como o "to", podendo ser um único email, lista separada por vírgulas ou um array.</p>


<h3>$this->email->subject()</h3>

<p>Define o Assunto do email:</p>
<code>$this->email->subject('<var>Este é o assunto</var>');</code>

<h3>$this->email->message()</h3>
<p>Define a mensagem do email:</p>
<code>$this->email->message('<var>Esta é a mensagem</var>');</code>

<h3>$this->email->set_alt_message()</h3>

<p>Define a mensagem alternativa do email:</p>
<code>$this->email->set_alt_message('<var>Esta é a mensagem alternativa</var>');</code>

<p>Este é uma mensagem opcional que pode ser usada se você enviar email em HTML.  Ela permite você especificar uma mensagem 
alternativa sem formatação HTML, que é adicionada ao cabeçalho do email para pessoas que não aceitam emails HTML. 
Se você não definir esta mensagem, o Code Igniter vai extraí-la do seu email removendo as tags HTML do mesmo.</p>



<h3>$this->email->clear()</h3>
<p>Reseta todas as variaveis de email.  Esta função deve ser usada se você precisar rodar a função de envio de email em 
um loop, resetando as informações entre os ciclos.

<code>foreach ($list as $name => $address)<br />

{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this->email->clear();<br /><br />
	
&nbsp;&nbsp;&nbsp;&nbsp;$this->email->to($address);<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this->email->from('voce@seu-site.com');<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this->email->subject('Seu nome '.$name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this->email->message('Ola '.$name.' Aqui esta a informacao que voce precisa.');<br />
&nbsp;&nbsp;&nbsp;&nbsp;$this->email->send();<br />
}</code>

<p>Se você passar TRUE como parametro, todos os anexos também serão resetados:</p>

<code>$this->email->clear(TRUE);</code>


<h3>$this->email->send()</h3>
<p>Função de envio de email. Retorna o booleano TRUE ou FALSE baseado no sucesso ou falha, permitindo que seja 
utilizada em condicionais:</p>

<code>if ( ! $this->email->send())<br />
{<br />

&nbsp;&nbsp;&nbsp;&nbsp;// Gerar Erro<br />
}</code>


<h3>$this->email->attach()</h3>
<p>Permite que você envie um anexo. Passe o caminho e nome do arquivo como primeiro parametro. Nota: Use o caminho do 
arquivo, e não sua URL. 
Para anexar vários arquivos, use a função várias vezes. Por exemplo:</p>

<code>$this->email->attach('/path/to/photo1.jpg');<br />
$this->email->attach('/path/to/photo2.jpg');<br />
$this->email->attach('/path/to/photo3.jpg');<br />

<br />
$this->email->send();</code>


<h3>$this->email->print_debugger()</h3>
<p>Retorna uma string contendo qualquer mensagem de servidor, cabeçalho de email e a própria mensagem. Útil para debug.</p>


<h2>Evitando Quebra de Palavra</h2>

<p>Se você deixou a quebra de palavras ligado (o que é recomendado para seguir o RFC 822) e você tem um link no corpo do 
email, ele pode ser quebrado também, fazendo com que o mesmo não seja "clicável" pela pessoa que recebeu o email. O Code 
Igniter permite que você evite a quebra de palavra em determinadas partes da sua mensagem, dessa forma:

<code>The text of your email that<br />

gets wrapped normally.<br />
<br />
<var>{unwrap}</var>http://www.some-site.com/a_long_link_that_should_not_be_wrapped.html<var>{/unwrap}</var><br />
<br />
More text that will be<br />
wrapped normally.</code>

<p>Coloque o trecho que você não quer quebrar entre: <var>{unwrap}</var> <var>{/unwrap}</var>


</div>
<!-- END CONTENT -->

<div id="footer">
<p>
Tópico Anterior:&nbsp;&nbsp;<a href="../database/index.html">Classe Database</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Topo da Página</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">Guia de Usuário CodeIgniter</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Próximo Assunto:&nbsp;&nbsp;<a href="encryption.html">Classe Criptografia</a>
</p>
<p><a href="http://codeigniter.com.br">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 - 2011 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">EllisLab, Inc.</a></p>
</div>

</body>


</html>
